RDMA/srp: Fix support for unpopulated and unbalanced NUMA nodes
authorNicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Fri, 5 Feb 2021 08:14:28 +0000 (09:14 +0100)
committerSalvatore Bonaccorso <carnil@debian.org>
Fri, 19 Mar 2021 18:20:52 +0000 (18:20 +0000)
commit8f94239b1c6bc34c56e4a4783fdf8957a4cacc1e
tree2b00a79d745099ec70c77835295a9372e5bc4d3e
parent088506042d33d90d5c00280c6aa0868aca32ebf9
RDMA/srp: Fix support for unpopulated and unbalanced NUMA nodes

commit 2b5715fc17386a6223490d5b8f08d031999b0c0b upstream.

The current code computes a number of channels per SRP target and spreads
them equally across all online NUMA nodes.  Each channel is then assigned
a CPU within this node.

In the case of unbalanced, or even unpopulated nodes, some channels do not
get a CPU associated and thus do not get connected.  This causes the SRP
connection to fail.

This patch solves the issue by rewriting channel computation and
allocation:

- Drop channel to node/CPU association as it had no real effect on
  locality but added unnecessary complexity.

- Tweak the number of channels allocated to reduce CPU contention when
  possible:
  - Up to one channel per CPU (instead of up to 4 by node)
  - At least 4 channels per node, unless ch_count module parameter is
    used.

Link: https://lore.kernel.org/r/9cb4d9d3-30ad-2276-7eff-e85f7ddfb411@suse.com
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Cc: Yi Zhang <yi.zhang@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Gbp-Pq: Topic bugfix/all
Gbp-Pq: Name rdma-srp-fix-support-for-unpopulated-and-unbalanced-numa-nodes.patch
drivers/infiniband/ulp/srp/ib_srp.c